// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "Engine/HitResult.h"
#include "GameplayTagContainer.h"
#include "UObject/Interface.h"

#include "LyraContextEffectsInterface.generated.h"

#define UE_API LYRAGAME_API

class UAnimSequenceBase;
class UObject;
class USceneComponent;
struct FFrame;

/**
 * 效果上下文匹配类型枚举
 */
UENUM()
enum EEffectsContextMatchType: int
{
	ExactMatch, // 精确匹配
	BestMatch // 最佳匹配
};

/**
 * 上下文效果接口U类
 */
 UINTERFACE(MinimalAPI, Blueprintable)
 class ULyraContextEffectsInterface : public UInterface
 {
	 GENERATED_BODY()

 };
 
 /**
  * 上下文效果接口
  */
 class ILyraContextEffectsInterface : public IInterface
 {
	 GENERATED_BODY()

 public:

	/**
	 * 动画运动效果函数
	 */
 	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	UE_API void AnimMotionEffect(const FName Bone // 骨骼名称
		, const FGameplayTag MotionEffect // 运动效果标签
		, USceneComponent* StaticMeshComponent // 静态网格组件
		, const FVector LocationOffset // 位置偏移
		, const FRotator RotationOffset // 旋转偏移
		, const UAnimSequenceBase* AnimationSequence // 动画序列
		, const bool bHitSuccess // 命中成功标志
		, const FHitResult HitResult // 命中结果
		, FGameplayTagContainer Contexts // 上下文容器
		, FVector VFXScale = FVector(1) // VFX缩放，默认为(1,1,1)
		, float AudioVolume = 1 // 音频音量，默认为1
		, float AudioPitch = 1); // 音频音高，默认为1
 };

#undef UE_API